package com.data.sample.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.data.sample.entity.CkMapping;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * OPC UA通讯协议信息 Mapper 接口
 * @author zhaocx
 * @date 2025-10-24
 */
@Mapper
public interface OpcUaCkMapper extends BaseMapper<CkMapping> {

    /**
     * 根据所有变量ck存储为主
     * @param protocolId 变量id
     * @return 机组列表
     */
    List<CkMapping> selectByProtocolId(@Param("protocolId") String protocolId);

    /**
     * 动态列批量插入CK
     * @param tableName 目标表名（可选，也可写死在XML）
     * @param columns 动态列名列表（必传，如["id","name","create_time"]）
     * @param dataList 数据列表（每个Map对应1行数据，key=列名，value=列值）
     */
    @DS("clickhouse")
    void dynamicBatchInsert(
            @Param("tableName") String tableName,
            @Param("columns") List<String> columns,
            @Param("dataList") List<Map<String, Object>> dataList);
}

